iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0
Software Development

30天快速上手Laravel系列 第 20

Day20-[Laravel 資料夾目錄與內容] Artisan command 初探

  • 分享至 

  • xImage
  •  

介紹

在前面的章節講了這麼多次,今天終於要來提到Artisan command了,什麼是Artsian Command呢?

是 Laravel 裡的一個指令列介面的名稱,提供了許多指令來幫助你開發,也可以自訂需要的指令

使用方式

  • php artisan list: 列出所有可以使用的 Artisan 指令,可以先用這個看看目前有什麼指令

  • php artisan help {command} : 列出command的細節,包含描述,可以使用的參數及選項

laravel提供的範例 php artisan help migrate 可以直接用group名稱,不過其他大部分的都會需要比較完整的指令名稱,例如 php artisan help queue:listen (只用queue的話會出現錯誤)

  • php artisan {command}: 執行指令動作 (參數跟選項依指令決定要不要加)

建立自己的指令

Step 1: php artisan make:command $name 下指令或是自己建立都可以,建議下指令,因為他也是有預設一些值,會比較方便。建立的檔案位置會在 app/Console/Commands (其中name是檔案名稱)
(5.2之前的版本是 make:console)

下指令最後可以帶入 --command=${欲使用的終端指令名稱},沒帶入的話沒關係,可以在檔案內的$signature變數改設定值

Step2: 編輯檔案

5.3 之後還有提供 Closure Commands 的方式可以使用

<?php

namespace App\Console\Commands;

use App\User;
use App\DripEmailer;
use Illuminate\Console\Command;

class SendEmails extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'email:send {user} {--queue}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Send drip e-mails to a user';

    /**
     * The drip e-mail service.
     *
     * @var DripEmailer
     */
    protected $drip;

    /**
     * Create a new command instance.
     *
     * @param  DripEmailer  $drip
     * @return void
     */
    public function __construct(DripEmailer $drip)
    {
        parent::__construct();

        $this->drip = $drip;
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $this->drip->send(User::find($this->argument('user')));
    }
}

範例說明

protected $signature = 'email:send {user} {--queue}';
  • 像這樣下指令的時候就是 php artsian email:send 123 或是 php artsian email:send 123 --queue

  • 參數 通常是必須,選項 可不填,都可設定多個

  • user 代表的是指令需要帶入的參數,以下還有幾種寫法(跟route類似)

    • {user?}: 可選的的參數
    • {user=foo}: 可選的的參數及預設的值
    • {user*}: * 代表輸入的要是陣列
    • {user : 使用者的 ID }: 用: 加入敘述
  • 選項:關鍵字是 --,以下還有幾種寫法

    • {--queue=}: 選項後面加上 =,表示選項需要明確指定值
    • {--Q|queue}: 可以用|給予簡寫
    • {--id=*}: * 代表輸入的要是陣列
    • {--queue= : 這個工作是否該進入隊列}: 用: 加入敘述

其他可參考之後的章節: Artisan command-詳細介紹


上一篇
Day19-[Laravel 資料夾目錄與內容] Config
下一篇
Day21-[Laravel 資料夾目錄與內容] Artisan command 詳細介紹
系列文
30天快速上手Laravel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言